# -*- coding: utf-8 -*-
# @Author : Ace
# @File : demo.py
# @Software: PyCharm
"""
课题：
  外包需求分析实战(一)
知识点：
        1.回顾A课爬虫基础
        2.请求库requests-html学习
        3.外包需求JS逆向分析实战
"""

# 1.数据提取：
# xpath **：
"""
//*  定义任意的标签
./   当前标签
last()  取第一个

"""
# bs4：pass
# re：

#
"""
<a href="https://movie.douban.com/subject/1292052/" class="">\n\t
                            <span class="title">肖申克的救赎</span>
                                    <span class="title">&nbsp;/&nbsp;The Shawshank Redemption</span>
                                <span class="other">&nbsp;/&nbsp;月黑高飞(港)  /  刺激1995(台)</span>
                        </a>


"""
# import re, requests
#
# url = 'https://movie.douban.com/top250'
# headers = {
#     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
# }
# response = requests.get(url, headers=headers).content.decode().replace('\n', '').replace('\t', '').replace(' ', '')
# # print(response)
# title_list = re.findall('<spanclass="title">(.*?)</span><spanclass="title"', response)
# print(title_list)


# 面向对象开发爬虫：

"""
爬虫的原理：
1.准备数据(url, headers, 用户输入)
2.发送请求，获取响应
3.解析响应，数据提取
4.保存数据

思路流程整理：
1.抓包
2.判断数据(客户需要的数据)的加载方式
3.两张情况：需要翻页/ 不需要翻页
4.判断翻页：翻页过程：GET，POST请求的翻页非常少
5.翻页参数显示在地址中，


"""
# from requests_html import HTMLSession
# # 创建请求对象
# session = HTMLSession()
# import os
#
#
# class Spider(object):
#
#     def __init__(self):
#         """
#         爬虫原理的第一步：
#         """
#         # 准备地址
#         self.start_url = 'https://movie.douban.com/top250?start={}&filter='
#         # 请求头
#         self.headers = {
#             'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
#         }
#         # print('99999999999999999999999999999')
#         # 保存文件夹的自动创建
#         self.os_path = os.getcwd() + '/豆瓣电影/'
#         if not os.path.exists(self.os_path):
#             os.mkdir(self.os_path)
#
#     def parse_start_url(self):
#         """
#         爬虫原理的第二步：发送请求，获取响应
#         :return:
#         """
#         # for 循环模拟翻页
#         for page in range(10):
#             url = self.start_url.format(page * 25)
#             response = session.get(url=url, headers=self.headers).html
#             """类中，函数方法的调用"""
#             self.parse_response_data(html=response)
#             # break
#
#     def parse_response_data(self, html):
#         """
#         爬虫原理的第三步：解析响应，数据提取
#         :param html: 需要解析响应的对象：翻页地址的响应对象
#         :return:
#         """
#         # 提取数据： //ol[@class="grid_view"]/li/div/div[2]/div[1]/a/span[1]/text()
#         # 提取所有电影的标签对象
#         li_list = html.xpath('//ol[@class="grid_view"]/li')
#         # for 遍历标签对象列表
#         for li in li_list:
#             # 提取电影的标题   这个结果列表的数据最多只有一个
#             name = ''.join(li.xpath('.//div/div[2]/div[1]/a/span[1]/text()'))
#             # 经典台词
#             text = ''.join(li.xpath('.//div/div[2]/div[2]/p[2]/span/text()'))
#             self.parse_save_data(name, text)
#
#     def parse_save_data(self, name, text):
#         """
#         爬虫原理的第四步：保存数据
#         :param name: 电影的标题
#         :param text: 经典台词
#         :return:
#         """
#         with open(self.os_path + '豆瓣电影排行榜.txt', 'a+', encoding='utf-8')as f:
#             f.write(name + '\n')
#             f.write(text + '\n')
#             f.write('\n')
#         print(f"电影：{name}----数据采集完成！！！")
#
#
# if __name__ == '__main__':
#     s = Spider()
#     s.parse_start_url()

# a = ['aa', 'bb', 'cc']
# b = [1, 2, 3]

# 用空字符串，拼接列表中，每一个元素
# result_1 = ''.join(a)
# print(result_1)

# 用555，拼接列表中，每一个元素
# result_2 = '555'.join(a)
# print(result_2)
#
# from requests_html import HTMLSession
# # 构造请求对象
# session = HTMLSession()
#
# # utf-8
# url = 'https://car.autohome.com.cn/price/brand-33-0-0-2.html'
#
# response = session.get(url).content.decode('utf-8')
# print(response)

"""
外包接单技巧：
# 分析1：发布这个需求的人群：开网店的，数据对比(衍生出：商品评论单，商品详情数据单等等等)
# 爬虫的地址接口，给你做成动态的，我相信你不仅仅只采集这一家店铺的销量数据

# 分析2：客户那边的电脑，是没有python环境的，之交接数据： 都要：
# py文件程序打包可执行程序(文件后缀为.exe的可执行程序)
# pyinstaller----下节课：


1.需求沟通方面
# 采集的字段(数据种类)有哪些：商品的名称 店铺信息 商品的销量
# 保存形式：保存excel表格中，CSV文件中

2.关于报价
# 数据量：60 * 4 = 240个商品数据 


3.提高价格方面

4.售后：
价格：1200，交货内容：程序源代码，程序，代码的运行讲解视频(含开发思路)，代码的详情注释
出现bug：免费维护20天-30天

为你考虑：这单我做的太多了，还有客户后期升级程序功能的这种情况非常多
接受1方案：说明会采集很多店铺：800-1200


只需要1家店铺数据：300-500

5.开发周期：
赶时间：加钱
不赶时间：根据自身能力定开发时间1-3天(可以提前交货，最好不要延期交货)

3天没做完：及时和客户沟通，延长开发周期
"""



















